import type { UploadUserFile } from 'element-plus'

export interface optionsProps {
  value: string | number
  label: string
  id?: string | number
}

export interface pagingProps {
  /**
   * 页码，从 1 开始
   */
  pageNo: number
  /**
   * 每页条数，最大值为 100
   */
  pageSize: number
  total: number
}
// 我参与的会议
export interface formSearchAttendedProps {
  conclusionStatus?: string
  /**
   * 创建时间
   */
  createTime?: string[]
  /**
   * 创建者Id
   */
  creatorId?: string
  /**
   * 会议描述
   */
  description?: string
  /**
   * 导出类型，导出时才生效 1、我参与的 2、我发起的 3、所有
   */
  exportType?: number
  /**
   * 会议地点
   */
  location?: string
  /**
   * 会议主题
   */
  meetingTopic?: string
  /**
   * 会议类型
   */
  meetingType?: string
  /**
   * 参加Id
   */
  participationId?: number
  /**
   * 我的参加状态 meeting_participation_status字典
   */
  participationStatus?: number
  /**
   * 会议开始时间
   */
  startTime?: string[]
  /**
   * 状态 1、待开始, 2、进行中3、已结束
   */
  status?: number

  keyName?: string
  keyValue?: string
}

// 分页返回
export interface resPageAttendedProps {
  code?: number
  data?: pageResultAttendedProps
  msg?: string
}

/**
 * pageResultProps，分页结果
 */
export interface pageResultAttendedProps {
  /**
   * 数据
   */
  list: rowAttendedProps[]
  /**
   * 总量
   */
  total: number
}

// 关联信息
export interface associationsProps {
  /**
   * 关联内容
   */
  associationContent?: string
  /**
   * 关联类型
   */
  associationType?: string
  /**
   * 关联类型标签值
   */
  associationTypeLabel?: string
  /**
   * 主键
   */
  id: number
  /**
   * 会议ID
   */
  meetingId?: number

  associationId?: number | string
}

// 参会人信息
export interface participantsProps {
  /**
   * 主键
   */
  id: number
  /**
   * 会议ID
   */
  meetingId: number
  /**
   * 参会人id
   */
  participantId: number
  /**
   * 参会人姓名
   */
  participantName: string
  /**
   * 参与人参加的状态1、待定2、接受3、拒绝
   */
  status: string
  /**
   * 参与人参加的状态的label
   */
  statusLabel: string
}
export interface rowAttendedProps {
  conclusionStatus?: string
  /**
   * 关联信息
   */
  associations: associationsProps[]
  /**
   * 创建时间
   */
  createTime: Date
  /**
   * 创建者名称
   */
  creatorName?: string
  /**
   * 会议描述
   */
  description?: string
  /**
   * 会议结束时间
   */
  endTime: Date
  /**
   * 预估会议时长
   */
  estimatedDuration?: number
  /**
   * 主键
   */
  id: number
  /**
   * 会议地点
   */
  location?: string
  /**
   * 会议主题
   */
  meetingTopic: string
  /**
   * 会议类型
   */
  meetingType?: string
  /**
   * 会议参会人
   */
  participants: participantsProps[]
  /**
   * 会议开始时间
   */
  startTime: Date
  /**
   * 状态 1、待开始, 2、进行中3、已结束
   */
  status: number
}

//我组织的会议
export interface formSearchOrganizationalProps {
  conclusionStatus?: string
  /**
   * 创建时间
   */
  createTime?: Date[]
  /**
   * 创建者Id
   */
  creatorId?: string
  /**
   * 会议描述
   */
  description?: string
  /**
   * 导出类型，导出时才生效 1、我参与的 2、我发起的 3、所有
   */
  exportType?: number
  /**
   * 会议地点
   */
  location?: string
  /**
   * 会议主题
   */
  meetingTopic?: string
  /**
   * 会议类型
   */
  meetingType?: string
  /**
   * 参加Id
   */
  participationId?: number
  /**
   * 我的参加状态 meeting_participation_status字典
   */
  participationStatus?: number
  /**
   * 会议开始时间
   */
  startTime?: string[]
  /**
   * 状态 1、待开始, 2、进行中3、已结束
   */
  status?: number

  keyName?: string
  keyValue?: string
}

// 分页返回
export interface resPageOrganizationalProps {
  code?: number
  data?: pageResultOrganizationalProps
  msg?: string
}

/**
 * pageResultProps，分页结果
 */
export interface pageResultOrganizationalProps {
  /**
   * 数据
   */
  list: rowOrganizationalProps[]
  /**
   * 总量
   */
  total: number
}

export interface rowOrganizationalProps {
  conclusionStatus?: string
  /**
   * 关联信息
   */
  associations: associationsProps[]
  /**
   * 创建时间
   */
  createTime: Date
  /**
   * 创建者名称
   */
  creatorName?: string
  /**
   * 会议描述
   */
  description?: string
  /**
   * 会议结束时间
   */
  endTime: Date
  /**
   * 预估会议时长
   */
  estimatedDuration?: number
  /**
   * 主键
   */
  id: number
  /**
   * 会议地点
   */
  location?: string
  /**
   * 会议主题
   */
  meetingTopic: string
  /**
   * 会议类型
   */
  meetingType?: string
  /**
   * 会议参会人
   */
  participants: participantsProps[]
  /**
   * 会议开始时间
   */
  startTime: string
  /**
   * 状态 1、待开始, 2、进行中3、已结束
   */
  status: number
}

// 所有会议
export interface formSearchAllProps {
  conclusionStatus?: string
  /**
   * 创建时间
   */
  createTime?: Date[]
  /**
   * 创建者Id
   */
  creatorId?: string
  /**
   * 会议描述
   */
  description?: string
  /**
   * 导出类型，导出时才生效 1、我参与的 2、我发起的 3、所有
   */
  exportType?: number
  /**
   * 会议地点
   */
  location?: string
  /**
   * 会议主题
   */
  meetingTopic?: string
  /**
   * 会议类型
   */
  meetingType?: string
  /**
   * 页码，从 1 开始
   */
  pageNo: number
  /**
   * 每页条数，最大值为 100
   */
  pageSize: number
  /**
   * 参加Id
   */
  participationId?: number
  /**
   * 我的参加状态 meeting_participation_status字典
   */
  participationStatus?: number
  /**
   * 会议开始时间
   */
  startTime?: string[]
  /**
   * 状态 1、待开始, 2、进行中3、已结束
   */
  status?: number

  keyName?: string
  keyValue?: string
}

// 分页返回
export interface resPageAllProps {
  code?: number
  data?: pageResultAllProps
  msg?: string
}

/**
 * pageResultProps，分页结果
 */
export interface pageResultAllProps {
  /**
   * 数据
   */
  list: rowAllProps[]
  /**
   * 总量
   */
  total: number
}

export interface rowAllProps {
  conclusionStatus?: string
  /**
   * 关联信息
   */
  associations: associationsProps[]
  /**
   * 创建时间
   */
  createTime: Date
  /**
   * 创建者名称
   */
  creatorName?: string
  /**
   * 会议描述
   */
  description?: string
  /**
   * 会议结束时间
   */
  endTime: Date
  /**
   * 预估会议时长
   */
  estimatedDuration?: number
  /**
   * 主键
   */
  id: number
  /**
   * 会议地点
   */
  location?: string
  /**
   * 会议主题
   */
  meetingTopic: string
  /**
   * 会议类型
   */
  meetingType?: string
  /**
   * 会议参会人
   */
  participants: participantsProps[]
  /**
   * 会议开始时间
   */
  startTime: string
  /**
   * 状态 1、待开始, 2、进行中3、已结束
   */
  status: number
}

// 关联信息
export interface associationsReportProps {
  /**
   * 关联内容
   */
  associationContent?: string
  /**
   * 关联ID
   */
  associationId?: number | string
  /**
   * 关联类型 meeting_association_type 字典
   */
  associationType?: string

  isEditing?: boolean

  associationValue?: {
    associationContent?: string
    associationId?: number | string
  }
}

export interface formKickoffProps {
  /**
   * 关联信息
   */
  associations: associationsReportProps[]
  /**
   * 会议描述
   */
  description?: string
  /**
   * 预估会议时长单位：min
   */
  estimatedDuration: number
  /**
   * 主键
   */
  id: number
  /**
   * 会议地点
   */
  location?: string
  /**
   * 会议主题
   */
  meetingTopic: string
  /**
   * 会议类型字典：meeting_type
   */
  meetingType?: string
  /**
   * 参与人id
   */
  participantIds: number[]
  /**
   * 会议开始时间
   */
  startTime: string
  // 会议时间段
  meetingTime: string[]
}

/**
 * 创建返回的props
 */
export interface resCreateProps {
  code?: number
  data?: number
  msg?: string
}

// 详情返回
export interface resDetailsProps {
  code?: number
  data?: detailsInfoProps
  msg?: string
}
export interface detailsInfoProps {
  conclusionStatus?: string
  /**
   * 关联信息
   */
  associations?: associationsProps[]
  /**
   * 会议结论
   */
  conclusions?: MeetingConclusionsRespVO[]
  /**
   * 创建时间
   */
  createTime?: string
  /**
   * 创建者名称
   */
  creatorName?: string
  /**
   * 会议描述
   */
  description?: string
  /**
   * 预估会议时长
   */
  estimatedDuration?: number
  /**
   * 主键
   */
  id: number
  /**
   * 会议地点
   */
  location?: string
  /**
   * 会议主题
   */
  meetingTopic: string
  /**
   * 会议类型
   */
  meetingType?: string
  /**
   * 会议参会人
   */
  participants?: participantsProps[]
  /**
   * 状态 1、待开始, 2、进行中 3、待下结论 4、已结束
   */
  participationStatus: string
  /**
   * 会议开始时间
   */
  startTime: string
  /**
   * 状态 1、待开始, 2、进行中 3、待下结论 4、已结束
   */
  status: string
  // 是否可点击删除 编辑 权限
  hasOperatePrivilege: boolean
}

export interface MeetingAssociationsRespVO {
  /**
   * 关联内容
   */
  associationContent: string
  /**
   * 关联id
   */
  associationId: number
  /**
   * 关联类型
   */
  associationType: string
  /**
   * 关联类型标签值
   */
  associationTypeLabel: string
  /**
   * 主键
   */
  id: number
  /**
   * 会议ID
   */
  meetingId: number
}

/**
 * MeetingConclusionsRespVO，管理后台 - 存储会议的结论信息，包括结论内容和关联信息。 Response VO
 */
export interface MeetingConclusionsRespVO {
  /**
   * 关联信息ids，用逗号分割project_meeting_associations.id存入
   */
  associationIds: string
  /**
   * 关联信息
   */
  associationInfos: MeetingAssociationsRespVO[]
  /**
   * 结论内容
   */
  conclusionContent: string
  /**
   * 创建时间
   */
  createTime: Date
  /**
   * 主键
   */
  id: number
  /**
   * 会议ID
   */
  meetingId: number
  /**
   * 相关文档
   */
  relatedDocuments: RelatedDocumentsRespVO[]
}

/**
 * RelatedDocumentsRespVO，管理后台 - 相关文档 Response VO
 */
export interface RelatedDocumentsRespVO {
  /**
   * 业务关联信息
   */
  businessAssociationInfo?: string
  /**
   * 业务ID，非空
   */
  businessId: number
  /**
   * 业务类型
   */
  businessType?: string
  /**
   * 创建时间，默认当前时间
   */
  createTime?: Date
  /**
   * 文件ID，最大长度50
   */
  fileId?: string
  /**
   * 文件名
   */
  fileName?: string
  /**
   * 文件类型
   */
  fileType?: string
  /**
   * 文件URL
   */
  fileUrl?: string
  /**
   * 自增主键
   */
  id: number
}

interface userFile extends UploadUserFile {
  id?: string
  type?: string
}
export interface conclusionDialogProps {
  items: Record<'associationId', string | number>[]
  fileList: userFile[]
  /**
   * 关联信息ids，用逗号分割project_meeting_associations.id存入
   */
  associationIds: string
  /**
   * 结论内容
   */
  conclusionContent: string
  /**
   * 主键
   */
  id: number
  /**
   * 会议ID
   */
  meetingId: number
  /**
   * 关联文档
   */
  relatedDocumentList: relateProps[]
}

export interface relateProps {
  /**
   * 文件ID，最大长度50
   */
  fileId: string
  /**
   * 文件名
   */
  fileName: string
  /**
   * 文件类型
   */
  fileType: string
  /**
   * 文件URL
   */
  fileUrl: string
}
// 获取人员信息
export interface resUserSimpleProps {
  code?: number
  data?: userSimpleProps[]
  msg?: string
}

export interface userSimpleProps {
  /**
   * 部门ID
   */
  deptId?: number
  /**
   * 部门名称
   */
  deptName?: string
  /**
   * 用户编号
   */
  id?: number
  /**
   * 用户昵称
   */
  nickname: string
}

export interface resAssociationTypeProps {
  code?: number
  msg?: string
  data?: {
    associationId?: number
    associationContent?: string
  }[]
}
export interface resProps {
  code?: number
  data?: any
  msg?: string
}
